import { createRouter, createWebHistory } from 'vue-router'
import type { Ref } from 'vue'

const router = createRouter({
    history: createWebHistory(import.meta.env.BASE_URL),
    routes: [
        {
            path: '/',
            name: 'Chat',
            component: () => import('@/views/chat-view/chat-view.vue'),
            meta: {
                title: 'MateChat 首页',
            },
        },
        {
            path: '/agent',
            name: 'Agent',
            component: () => import('@/views/agent-view/agent-view.vue'),
            meta: {
                title: 'MateChat 智能体',
            },
        },
        {
            path: '/prompt',
            name: 'Prompt',
            component: () => import('@/views/prompt-view/prompt-view.vue'),
            meta: {
                title: 'MateChat 提示词',
            },
        },
    ],
})

router.beforeEach((to, from, next) => {
    // 从当前路由开始往上查找具有title的meta字段
    const title = getTitle(to)

    if (title) {
        // 设置页面标题
        document.title = title
    }

    next()
})

// 递归查找具有title的meta字段
function getTitle(route: any) {
    // 如果当前路由有meta字段且meta.title是一个字符串，则直接返回
    if (route.meta && typeof route.meta.title === 'string') {
        return route.meta.title
    }

    // 如果当前路由没有meta字段或meta.title不是一个字符串，则继续查找父路由
    if (route.parent) {
        return getTitle(route.parent)
    }

    return null // 如果父路由也没有title，则返回null
}

export default router
